WHERE - klauzula

Okre£la, kt≤re rekordy z tabel wymienionych w klauzuli FROM s╣ uwzglΩdniane przez instrukcje SELECT, UPDATE, lub DELETE.

Sk│adnia

SELECT lista_p≤l
    FROM wyra┐enie_tabelowe
    WHERE kryteria

Sk│adnia instrukcji SELECT z klauzul╣ WHERE zawiera nastΩpuj╣ce elementy:

Element Opis
lista_p≤l Nazwy pobieranych p≤l, kt≤rym mog╣ towarzyszyµ aliasy nazw p≤l, predykaty wyboru (ALL, DISTINCT, DISTINCTROW lub TOP) albo inne opcje instrukcji SELECT.
wyra┐enie_tabelowe Nazwa tabeli lub tabel, z kt≤rych maj╣ byµ pobrane dane.
kryteria Wyra┐enie, kt≤re spe│niaj╣ rekordy w│╣czane do wyniku kwerendy.

Uwagi

Aparat bazy danych Microsoft Jet wybiera z tabel te rekordy, kt≤re spe│niaj╣ warunki wymienione w klauzuli WHERE. Je£li nie okre£lisz klauzuli WHERE, kwerenda zwr≤ci wszystkie rekordy z tabeli. Je£li w klauzuli FROM kwerendy podano kilka tabel, a nie zamieszczono klauzuli WHERE lub JOIN, w≤wczas kwerenda utworzy iloczyn kartezja±ski tabel.

Klauzula WHERE nie jest obowi╣zkowa, jednak je£li wystΩpuje, musi byµ umieszczona po klauzuli FROM. Mo┐na na przyk│ad wybraµ wszystkich pracownik≤w dzia│u sprzeda┐y (WHERE Dzia│ = 'Sprzeda┐') lub wszystkich klient≤w w wieku od 18 do 30 lat (WHERE Wiek Between 18 And 30).

Je£li nie u┐ywasz klauzuli JOIN, aby wykonaµ operacjΩ sprzΩgania SQL wielu tabel, wynikowy obiekt Recordset nie bΩdzie m≤g│ byµ aktualizowany.

Klauzula WHERE jest podobna w dzia│aniu do klauzuli HAVING. WHERE okre£la, kt≤re rekordy s╣ wybrane. Podobnie, je£li rekordy s╣ grupowane przy u┐yciu klauzuli GROUP BY, HAVING okre£la, kt≤re rekordy s╣ wy£wietlane.

U┐yj klauzuli WHERE aby wyeliminowaµ rekordy, kt≤re nie maj╣ byµ grupowane przy u┐yciu klauzuli GROUP BY.

Do okre£lania rekord≤w zwracanych przez instrukcjΩ SQL mo┐na stosowaµ r≤┐ne wyra┐enia. Poni┐sza instrukcja SQL wybiera tych pracownik≤w, kt≤rych wynagrodzenie przekracza 2 100:

SELECT Nazwisko, Wynagrodzenie

FROM Pracownicy

WHERE Wynagrodzenie > 2100;

Klauzula WHERE mo┐e zawieraµ do 40 wyra┐e± po│╣czonych operatorami logicznymi And i Or.

Nazwa pola, w kt≤rej wystΩpuje spacja lub znak przestankowy, musi byµ umieszczona w nawiasach kwadratowych ([ ]). Tabela z danymi o klientach mo┐e zawieraµ r≤┐ne rodzaje informacji:

SELECT [Ulubiona restauracja klienta]

Kiedy okre£lasz argument kryteria, litera│ daty musi byµ w formacie ameryka±skim, nawet je£li nie u┐ywasz ameryka±skiej wersji aparatu baz danych Microsoft« Jet. I tak, data 10 maja 1996 roku, pisana w Polsce jako 96-05-10, w formacie ameryka±skim wygl╣da nastΩpuj╣co: 5/10/96 (miesi╣c/dzie±/rok). PamiΩtaj te┐, ┐e litera│ daty musi byµ otoczony dwoma znakami numeru (#), tak jak to ilustruj╣ dalsze przyk│ady.

Poni┐sza instrukcja SQL wyszukuje w tabeli rekordy datowane dnia 10 maja 1996 (bez wzglΩdu na wersjΩ jΩzykow╣ bazy danych):

SELECT *

FROM Zam≤wienia

WHERE DataWysy│ki = #5/10/96#;

Inn╣ mo┐liwo£ci╣ jest u┐ycie funkcji DateValue, kt≤ra rozpoznaje miΩdzynarodowe ustawienia definiowane w systemie Microsoft Windows. Poni┐szy przyk│ad kodu pasuje do warunk≤w ameryka±skich:

SELECT *

FROM Zam≤wienia

WHERE DataWysy│ki = DateValue('5/10/96');

A ten jest odpowiedni do warunk≤w polskich:

SELECT *

FROM Zam≤wienia

WHERE DataWysy│ki = DateValue('96-05-10');


Uwaga Je£li kolumna wymieniona w kryteriach jest typu GUID, sk│adnia kryteri≤w jest nieco inna:

WHERE ReplicaID = {GUID {12345678-90AB-CDEF-1234-567890ABCDEF}}

Nawiasy klamrowe i │╣czniki musz╣ byµ umieszczone w spos≤b pokazany w tym przyk│adzie.


Zobacz te┐
ALL DISTINCT, DISTINCTROW, TOP û predykaty (Microsoft Jet SQL) LEFT JOIN, RIGHT JOIN û operacje (Microsoft Jet SQL)
DELETE û instrukcja (Microsoft Jet SQL) ORDER BY û klauzula (Microsoft Jet SQL)
FROM û klauzula (Microsoft Jet SQL) SELECT - instrukcja (Microsoft Jet SQL)
GROUP BY û klauzula (Microsoft Jet SQL) SELECT...INTO û instrukcja (Microsoft Jet SQL)
HAVING û klauzula (Microsoft Jet SQL) Funkcje agreguj╣ce SQL (SQL)
IN û klauzula (Microsoft Jet SQL) UPDATE û instrukcja (Microsoft Jet SQL)
INNER JOIN û operacja (Microsoft Jet SQL)  

Przyk│ad

WHERE û przyk│ad klauzuli